perm filename PTMOVF.FAI[MSS,LCS]1 blob
sn#170760 filedate 1975-07-26 generic text, type T, neo UTF8
00100 TITLE MSSIO ; ********* JUN 8,74 *********
00210 INTERNAL LOOK,LOOKD,LOOKF
00310 ENTRY GETPTS,MOVIT,EXTEN
00700 DEFINE ERROR (MSG)
00800 < JSA 16,.ERROR
00900 JUMP [ASCIZ/MSG/
01000 ]
01100 >
01200
08300 .ERROR: 0
08400 OUTSTR [ASCIZ/?
08500 /] ;MAKE SURE HE CAN SEE HIS ERROR
08600 OUTSTR @(16) ;OUTPUT ERROR MESSAGE
08700 CALLI 1,12 ;LET USER CONTI2UE
08800 JRA 16,1(16)
00300
00400 CH←13
00500
00600 REGS: BLOCK 20
00700
00800 ;LOOK(<FILE>) FOR NO EXT., LOOKD() FOR .DAT, LOOKF() FOR .DMD
00900
01000 LOOKF: 0
01100 MOVSI 0,'DMD'
01200 JRST LOOK1
01300 LOOKD: 0
01400 MOVSI 0,'DAT'
01500 JRST LOOK1
01600 LOOK: 0
01700 MOVEI 0,0
01800 LOOK1: MOVEM 0,DIR+1
01900 MOVE 0,@(16)
02000 MOVEM 0,FILNAM
02100 JSA 16, INTFIQ
02200 SETZM DIR+2
02300 SETZM DIR+3
02400 LOOKUP CH,DIR
02500 TDZA 0,0
02600 MOVNI 0,1
02700 JRA 16,1(16)
02800
02900 INTFIQ: 0 ;INITS DSK FOR INPUT
03000 MOVEI REGS
03100 BLT REGS+3
03200 INIT CH,17
03300 SIXBIT/DSK/
03400 0
03500 HALT .-3
03600 ; ERROR <CAN'T INIT DSK!>
03700
03800 INTF4: MOVE 0,FILNAM#
03900 MOVEM 0,FN#
04000 MOVE 1,[POINT 7,FN]
04100 INTF3: MOVE 2,[POINT 6,DIR]
04200 SETZM DIR
04300 MOVEI 3,5
04400 INTF1: ILDB 0,1
04500 CAIN 0," "
04600 JRST INTF2
04700 SUBI 0,40
04800 IDPB 0,2
04900 SOJG 3,INTF1
05000 INTF2: HRLZI REGS
05100 BLT 3
05200 JRA 16,0(16)
05300
05400 DIR: BLOCK 4
12200 EXTERNAL .COMM.,XRN,KJY,PTR,POSI,AMOD,KNR,NNP
12300
12400 K←15↔J←14↔ M←2↔ R2←5↔ X←6↔ L←4↔ R←7↔ A←11↔RY←3↔RZ←13↔JJ2←12
12500 DEFINE FIXX(N)
12600 < JUMPGE N,.+5
12700 MOVNS N
12800 FIX N,233000
12900 MOVNS N
13000 CAIA
13100 FIX N,233000 > ; TO FIX IT LIKE 'IFIX' DOES.
13200
13300 ; SUBROUTINE GETPTS
13400 ; COMMON/KNR/N(500) /NNP/NP(500)
13500 ; COMMON/XRN/RN(4000) /KJY/ K,J
13600 ; COMMON R2,JA,CENTR,J2,RJQ(18),RX6,JR,L,RDIS
13700 ; 1/PTR/PWDS(250),ITEM,LL,I,IX
13800 ; EQUIVALENCE (R4,RJQ(2)),(R5,RJQ(3)),(R11,RJQ(9))
13900 ; 1,(R6,RJQ(4))
14000
14100 GETPTS: 0 ;CALL GETPTS(N)
14200 SETZ J, ; J=0
14300 SETZ K, ; K=0
14400 MOVE JJ2,POSI+=8
14500 MOVE R2,.COMM.
14600 ;; SETZ X,
14700 MOVE X,@(16)
14800 SOS X
14900 MOVEI M,PTR ; DO 1 M=1,ITEM
15000 ADDI M,(X)
15100 G1: AOJ X,
15200 MOVE L,(M)
15300 FIXX(L)
15400 MOVEI R,XRN ;L=PWDS(M)
15500 ADDI R,(L) ;IF(RTLINE(L))GO TO 1
15600 MOVE 1,1(R) ;RN(L+2)
15700 CAML R2,[=5.0]
15800 JRST GZ
15900 CAME R2,1
16000 JRST GX
16100 GZ: MOVE A,.COMM.+7 ;RY=RN(L+1)
16200 JUMPLE A,G9 ;F(R6.LE.0)GO TO 9
16300 CAME A,(R)
16400 JRST GX
16500 ; CHECK CODE NUM
16600 G9: MOVE A,2(R) ;IF(R6.NE.RY)GO TO 1
16700 CAMLE A,.COMM.+6
16800 JRST G2 ;9 IF(OUTLIM(R4,R5,RN(L+3)))GO TO 2
16900 CAMGE A,.COMM.+5 ;R4
17000 JRST G2
17100
17200 SKIPG JJ2
17300 MOVE JJ2,X
17400 AOJ J,
17500 ; IN LIMITS?
17600 ; MOVEI A,XRN+=2498 ;J=J+1
17650 MOVEI A,KNR-1
17700 ADDI A,(J)
17800 MOVEI 0,(L)
17900 AOJ K, ;K=K+1
18000 ; MOVEI 1,XRN+=2998
18050 MOVEI 1,NNP-1
18100 ADDI 1,(K) ;NP(K)=L
18200 MOVEM 0,(1)
18300 ADDI 0,3 ;N(J)=L+3
18400 MOVEM 0,(A)
18500 ; NP IS FOR USE IN JUSTIFY ROUTINE
18600 G2: MOVE RY,(R) ;2 IF(RY.LT.4)GO TO 1
18700 CAMGE RY,[=4.0]
18800 JRST GX
18900 CAMLE RY,[=7.0]
19000 JRST GX ;IF(RY.GT.7)GO TO 1
19100 ; TWO-ENDED ITEM?
19200 MOVE RZ,-1(R) ;RZ=RN(L)
19300 ; WD CNT
19400 CAMN RY,[=4.0] ;GO TO(4,5,6,7),IFIX(RY)-3
19500 JRST G4
19600 CAMN RY,[=5.0]
19700 JRST G5
19800 CAMN RY,[=6.0]
19900 JRST G6
20000 CAMG RZ,[=4.0] ;4 IF(RZ.GT.2)GO TO 5
20100 JRST G5 ; THERE IS A TRILL WIGGLE
20200 JRST GX ;GO TO 1 -- NO WIGGLE (P7≠0)
20300 G4: CAMG RZ,[=2.0] ;7 IF(RZ.GT.3)GO TO 5
20400 JRST GX
20500 JRST G5 ;GO TO 1
20600 G6: CAMGE RZ,[=8.0] ;6 IF(RZ.LT.8)GO TO 8
20700 JRST G8
20800 ;; MOVEI 1,XRN ;IF(RN(L+10).LT.30)GO TO 8
20900 ;; ADDI 1,(L)
21000 ;; MOVE 1,11(1)
21100 MOVE 1,=9(R)
21200 CAMGE 1,[=30.0]
21300 JRST G8
21400 MOVE A,7(R) ; IF(OUTLIM(R4,R5,RN(L+8)))GO TO 8
21500 CAMLE A,.COMM.+6
21600 JRST G8
21700 CAMGE A,.COMM.+5
21800 JRST G8
21900 SKIPG JJ2
22000 MOVE JJ2,X
22100 AOJ J,
22200 ; IN LIMITS?
22300 ; MOVEI A,XRN+=2498 ;J=J+1
22350 MOVEI A,KNR-1
22400 ADDI A,(J)
22500 MOVEI 0,(L) ;J=J+1
22600 ADDI 0,=8 ;N(J)=L+8
22700 MOVEM 0,(A)
22800 G8: CAMGE RZ,[=7.0] ;8 IF(RZ.LT.7)GO TO 5
22900 JRST G5
23000 MOVE A,6(R) ;IF(RN(L+7))GO TO G8B
23100 JUMPL A,G8B ; P7 IS NEG FOR TREMOLO
23200 MOVE A,7(R) ;IF(RN(L+8).NE.0)GO TO G8B
23300 JUMPN A,G8B
23400 CAMGE RZ,[=8.0]
23500 JRST G5 ;IF(RZ.LT.8)GO TO G5
23600 MOVE A,=9(R) ;IF(RN(L+10).EQ.0)GO TO G5
23700 JUMPE A,G5 ;PASSES NUMBER OVER BEAM.
23800 G8B: MOVE A,8(R)
23900 CAMLE A,.COMM.+6
24000 JRST G5
24100 CAMGE A,.COMM.+5 ;R4
24200 JRST G5
24300
24400 SKIPG JJ2
24500 MOVE JJ2,X
24600 AOJ J, ;J=J+1
24700 ; IN LIMITS?
24800 ; MOVEI A,XRN+=2498 ;J=J+1
24850 MOVEI A,KNR-1
24900 ADDI A,(J)
25000 MOVEI 0,(L)
25100 ADDI 0,=9 ;IF(OUTLIM(R4,R5,RN(L+9)))GO TO 5
25200 MOVEM 0,(A) ;N(J)=L+9
25300 G5: MOVE A,5(R)
25400 CAMLE A,.COMM.+6
25500 JRST GX
25600 CAMGE A,.COMM.+5 ;R4
25700 JRST GX
25800
25900 SKIPG JJ2
26000 MOVE JJ2,X
26100 AOJ J,
26200 ; IN LIMITS?
26300 ;| MOVEI A,XRN+=2498 ;J=J+1
26350 MOVEI A,KNR-1
26400 ADDI A,(J)
26500 MOVEI 0,(L) ;5 IF(OUTLIM(R4,R5,RN(L+6)))GO TO 1
26600 ADDI 0,6 ;N(J)=L+6
26700 MOVEM 0,(A)
26800 GX: CAMGE X,PTR+=250 ;1 CONTINUE
26900 AOJA M,G1
27000 MOVEM JJ2,POSI+=8
27100 MOVEM J,KJY+1
27200 MOVEM K,KJY
27300 JRA 16,1(16)
27400
27500 ; SUBROUTINE MOVIT
27600 ; COMMON /KNR/ N(500)
27700 ; COMMON/XRN/RN(4000) /KJY/ DONT,J
27800 ; COMMON R2,JA,CENTR,J2,RJQ(18),RX6,JR,L,RDIS
27900 ; EQUIVALENCE (R4,RJQ(2)),(R5,RJQ(3)),(R9,RJQ(7))
28000 ; 1,(R6,RJQ(4)),(N,RN(2500)),(R8,RJQ(6))
28100 MOVIT: 0 ;RDIS=(R9-R8)/(R5-R4)
28200 MOVE R,.COMM.+=10
28300 FSBR R,.COMM.+=9
28400 MOVE RY,.COMM.+6
28500 FSBR RY,.COMM.+5
28600 FDVR R,RY
28700 ; MOVEI L,XRN+=2499 ; DO 1 K=1,J
28750 MOVEI L,KNR
28800 SETZ K,
28900 MOVE 0,.COMM.+=10 ; SET UP R9
29000 M1: MOVE X,L ; L=N(K)
29100 MOVE A,(X)
29200 MOVEI R2,XRN ;RA=RN(L)
29300 ADDI R2,(A)
29400 MOVEI RZ,(R2)
29500 MOVE R2,-1(R2)
29600 CAMGE R2,.COMM.+5 ;IF(OUTLIM(R4,R5,RA))GO TO 1
29700 JRST MX
29800 CAMLE R2,.COMM.+6
29900 JRST MX
30000 JUMPE 0,M2 ;IF(R9.NE.0)RA=(RA-R4)*RDIS
30100 FSBR R2,.COMM.+5
30200 FMPR R2,R
30300 M2: FADR R2,.COMM.+=9 ; RN(L)=R8+RA
30400 MOVEM R2,-1(RZ)
30500 MX: AOJ K, ;1 CONTINUE
30600 CAMGE K,KJY+1
30700 AOJA L,M1
30800 JRA 16,(16)
36300
36400 EXTEN: 0 ;FUNCTION EXTEN(X)
36500 HRRM 16,.+2
36600 JSA 16,AMOD ;EXTEN=AMOD(X,1.)*10.
36700 JUMP @0
36800 JUMP [=1.0]
36900 FMPR [=10.0]
37000 JRA 16,1(16)
37100
37200 END